package com.ug.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ug.system.entity.SysUser;
import com.ug.system.entity.dto.QueryDto;
import com.ug.system.entity.vo.SysUserExportVO;
import com.ug.system.entity.vo.SysUserVO;
import com.ug.system.entity.dto.PasswordDto;
import com.ug.system.entity.dto.SysUserDto;

import java.util.List;

/**
 * @Author LY
 * @create 2024/7/16 15:45
 * @Description 用户 service
 */
public interface SysUserService {

    /**
     * 根据用户id查询用户
     * @param userId 用户id
     */
    SysUser findByUserId(Long userId);

    /**
     * 根据用户名查询用户
     * @param userName 用户名
     */
    SysUser findByName(String userName);

    /**
     * 根据openid查询用户信息
     * @param openId 用户openid
     */
    SysUser findByOpenId(String openId);

    /**
     * 编辑用户
     * @param sysUserVO 用户dto
     */
    void editUser(SysUserVO sysUserVO);

    /**
     * 第一次快捷登录保存用户信息
     * @param sysUser 用户信息
     */
    void saveUserByFirst(SysUser sysUser);

    /**
     * 查询用户列表
     * @param sysUserDto 查询dto
     * @param queryDto 查询dto
     */
    IPage<SysUserVO> queryUserTable(SysUserDto sysUserDto, QueryDto queryDto);

    /**
     * 根据用户名查询用户
     * @param username 用户名
     */
    SysUserVO loadByName(String username);

    /**
     * 删除用户
     * @param userId 用户id
     */
    void delUser(String userId);

    /**
     * 修改用户状态
     * @param userId 字典编号
     * @param enabled 0：禁用，1：启用
     */
    void enabledUser(Long userId, int enabled);

    /**
     * 修改用户密码
     * @param passwordDto 修改密码对象信息
     */
    void updatePassword(PasswordDto passwordDto);

    /**
     * 保持账号
     * @param username 用户名
     * @param password 密码
     */
    void saveAccount(String username, String password);

    /**
     * 修改昵称和邮箱信息
     * @param sysUserDto 用户信息
     */
    void updateSysUser(SysUserDto sysUserDto);

    /**
     * 导出用户数据
     * @param dto 查询参数
     */
    List<SysUserExportVO> exportList(SysUserDto dto);

}
